namespace SeaVM
{
    public class Boolean
    {
        public bool value;
        
        public static Data Add(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Add运算");
        }

        public static Data Add(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Add运算");
        }
        
        public static Data Add(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Add运算");
        }

        public static Data Add(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Add运算");
        }

        public static Data Sub(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Sub运算");
        }

        public static Data Sub(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Sub运算");
        }
        
        public static Data Sub(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Sub运算");
        }

        public static Data Sub(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Sub运算");
        }

        public static Data Mul(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Mul运算");
        }

        public static Data Mul(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Mul运算");
        }
        
        public static Data Mul(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Mul运算");
        }

        public static Data Mul(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Mul运算");
        }

        public static Data Div(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Div运算");
        }

        public static Data Div(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Div运算");
        }
        
        public static Data Div(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Div运算");
        }

        public static Data Div(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Div运算");
        }

        public static Data Mod(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Mod运算");
        }

        public static Data Mod(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Mod运算");
        }
        
        public static Data Mod(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Mod运算");
        }

        public static Data Mod(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Mod运算");
        }

        public static Data Gr(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Gr运算");
        }

        public static Data Gr(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Gr运算");
        }
        
        public static Data Gr(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Gr运算");
        }

        public static Data Gr(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Gr运算");
        }

        public static Data Le(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Le运算");
        }

        public static Data Le(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Le运算");
        }
        
        public static Data Le(Boolean a,Boolean b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Le运算");
        }

        public static Data Le(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Le运算");
        }

        public static Data Eq(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Eq运算");
        }

        public static Data Eq(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Eq运算");
        }
        
        public static Data Eq(Boolean a,Boolean b)
        {
            return new Data(a.value == b.value);
        }

        public static Data Eq(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Eq运算");
        }

        public static Data Neq(Boolean a,Number b)
        {
            throw new VmTypeError("Boolean类型不能和Number类型进行Neq运算");
        }

        public static Data Neq(Boolean a,String b)
        {
            throw new VmTypeError("Boolean类型不能和Boolean类型进行Neq运算");
        }
        
        public static Data Neq(Boolean a,Boolean b)
        {
            return new Data(a.value != b.value);
        }

        public static Data Neq(Boolean a,Nil b)
        {
            throw new VmTypeError("Boolean类型不能和Nil类型进行Neq运算");
        }
    }
}